@echo off
REM SonarQube 扫描脚本 - Windows 版本
REM 学生请假管理系统

echo ========================================
echo   SonarQube 代码质量扫描
echo   学生请假管理系统
echo ========================================
echo.

REM 检查 SONAR_TOKEN 环境变量
if "%SONAR_TOKEN%"=="" (
    echo [错误] 未设置 SONAR_TOKEN 环境变量
    echo.
    echo 请先设置 Token:
    echo   set SONAR_TOKEN=your-token-here
    echo.
    echo 如何获取 Token:
    echo   1. 访问 http://localhost:9000
    echo   2. 登录后点击右上角头像
    echo   3. My Account ^> Security ^> Generate Tokens
    echo.
    pause
    exit /b 1
)

echo [1/5] 检查 SonarQube 服务...
curl -s http://localhost:9000/api/system/status > nul 2>&1
if %errorlevel% neq 0 (
    echo [错误] 无法连接到 SonarQube 服务
    echo 请确保 SonarQube 已启动: docker start sonarqube
    pause
    exit /b 1
)
echo [✓] SonarQube 服务运行正常

echo.
echo [2/5] 检查 SonarScanner...
where sonar-scanner >nul 2>nul
if %errorlevel% neq 0 (
    echo [警告] 未找到 sonar-scanner
    echo 正在尝试使用 npx 运行...
    set USE_NPX=1
) else (
    echo [✓] SonarScanner 已安装
    set USE_NPX=0
)

echo.
echo [3/5] 清理旧的扫描缓存...
if exist .scannerwork rmdir /s /q .scannerwork
echo [✓] 清理完成

echo.
echo [4/5] 生成测试覆盖率报告...
cd server
call npm run test:coverage
if %errorlevel% neq 0 (
    echo [警告] 测试覆盖率生成失败，继续扫描...
)
cd ..
echo [✓] 测试完成

echo.
echo [5/5] 开始 SonarQube 扫描...
if %USE_NPX%==1 (
    npx sonarqube-scanner ^
      -Dsonar.host.url=http://localhost:9000 ^
      -Dsonar.token=%SONAR_TOKEN%
) else (
    sonar-scanner ^
      -Dsonar.host.url=http://localhost:9000 ^
      -Dsonar.token=%SONAR_TOKEN%
)

if %errorlevel% equ 0 (
    echo.
    echo ========================================
    echo   扫描完成！✓
    echo ========================================
    echo.
    echo 查看报告: http://localhost:9000/dashboard?id=student-leave-management-system
    echo.
) else (
    echo.
    echo [错误] 扫描失败
    echo 请查看上面的错误信息
    echo.
    pause
    exit /b 1
)

pause

